void main() {
  // 1.常规函数
  say('常规函数：' + 'Jack');

  // 2.可选传参
  String intro = getIntro('Jack', age: 8);
  print('可选传参函数：' + intro);

  // 3.函数对象
  Function f = funcDemo1;
  f();

  // 4，匿名函数
  Function fun = () {
    print('这是一个匿名函数');
  };
  fun();
  funcDemo(() {
    print('这个匿名函数是个参数');
  });

  // 5.箭头函数
  int ret1 = sum1(10, 20);
  print(ret1);
  int ret2 = sum2(30, 40);
  print(ret2);
}

/**
 * 箭头函数1
 */
sum1(a, b) {
  return a + b; // 函数体只有一行代码
}

/**
 * 箭头函数2
 */
sum2(a, b) => a + b;

/**
 * 匿名函数
 */
void funcDemo(Function func) {
  func();
}

/**
 * 函数对象
 */
void funcDemo1() {
  print('函数对象：' + 'funcDemo1');
}

/**
 * 可选传参函数
 */
String getIntro(String name, {int? age}) {
  return ('$name say Hello, 年龄是${age != null ? age : '保密'}');
}

/**
 * 常规函数
 */
void say(String name) {
  print('$name say Hello');
}
